{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 8.3. Learning to recognize handwritten digits with a K-nearest neighbors classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import sklearn\n",
    "import sklearn.datasets as ds\n",
    "import sklearn.model_selection as ms\n",
    "import sklearn.neighbors as nb\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.0, 16.0)\n",
      "(1797, 64)\n"
     ]
    }
   ],
   "source": [
    "digits = ds.load_digits()\n",
    "X = digits.data\n",
    "y = digits.target\n",
    "print((X.min(), X.max()))\n",
    "print(X.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "podoc": {
     "output_text": "<matplotlib.figure.Figure at 0x858ec50>"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABo8AAANPCAYAAAAL1kb5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAuIwAALiMBeKU/dgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XeQleXZP/ALXARpUgQjoiCKIhZQ\niALGRI1ioqKYCAbH3ktEiQZxNCqWiCZGNHlHJb62+IoRC8v4xrYaidhBaiwoSFEUCyxFqiy/PzK5\nf7xmOYey5zwH+HxmmEzmvva5vyuwnHO+T6lVWVm5OgAAAAAAACAiamcdAAAAAAAAgNKhPAIAAAAA\nACBRHgEAAAAAAJAojwAAAAAAAEiURwAAAAAAACTKIwAAAAAAABLlEQAAAAAAAInyCAAAAAAAgER5\nBAAAAAAAQKI8AgAAAAAAIFEeAQAAAAAAkCiPAAAAAAAASJRHAAAAAAAAJMojAAAAAAAAEuURAAAA\nAAAAifIIAAAAAACARHkEAAAAAABAojwCAAAAAAAgUR4BAAAAAACQKI8AAAAAAABIlEcAAAAAAAAk\nyiMAAAAAAAAS5REAAAAAAACJ8ggAAAAAAIBEeQQAAAAAAECiPAIAAAAAACBRHgEAAAAAAJAojwAA\nAAAAAEiURwAAAAAAACTKIwAAAAAAAJKyrAPA5ubbb7+N6dOnx+zZs2Px4sWxePHiqFevXjRq1Cha\ntmwZ7du3jwYNGmQdEwAAAApq4cKF8cknn8RXX30VS5cujSVLlsSSJUuidu3a6X1yixYtYscdd4zt\nttsu67gAwBqUR1ADJk6cGE8//XRUVFTElClTYuXKlWudrVWrVuyyyy7x4x//OH7yk5/EoYceGrVr\nuwgQAGBTVVVVFR9//HG8++678d5778V7770Xs2bNigULFqRfq1evjm222SYaNWoU22+/fbRu3Tr2\n3HPP6NSpU/To0SOaNGmS9bcBsEFWrVoV06ZNi3fffTf9mjZtWnz66aexcOHCdT5Os2bNYq+99oru\n3bvHIYccEt26dfNeGQAyVKuysnJ11iFgU/W3v/0t7rzzznjjjTc2+Bht27aN888/P84888zYeuut\nazAdQHHNnDkzJkyYEOPHj4/x48fHhAkTYsGCBTm/ZuLEidGmTZsiJQSoOe+++2688sor8Y9//CNe\nffXVqKys3OBjbbXVVtG1a9fo06dPnHDCCYokoKQtXLgwxo4dG2+88Ua8+eabMW7cuFi8eHGN7/O9\n730v+vXrF2effXbsuOOONX58gFJ07LHHxj/+8Y91mt2Y15+wLpRHsAFmzJgRl19+eVRUVNTYMXff\nffe47bbb4uCDD66xYwIUyqeffpoKon//79dff73ex1EeAZuKVatWxZgxY6K8vDyefvrp+OKLLwqy\nT8OGDeOMM86IAQMGRLNmzQqyB8DGOOKII+Ltt98u2n516tSJs846KwYNGqRcBzZrDz30UPTv33+d\n55VHFJryCNZTRUVFnHXWWXnPpt8QtWvXjt/85jcxYMCAGj82wIb64osv4p133vk/ZVFNfWiqPAJK\n3fvvvx933313PP300/HVV18Vbd9mzZrF4MGD45RTTinangDr4vDDD4+xY8cWfd/vfe978ac//SkO\nP/zwou8NUGiff/55HHjggev1eaPyiELzzCNYDw8//HD0798/qqqqCnL8qqqqGDx4cHz88cdxxx13\nRK1atQqyD8D6+NnPfhZTpkzJOgZAJp555pl44IEHir7vvHnz4uKLL46XX3457rzzzmjQoEHRMwCU\nks8//zz69OkTgwcPXq8z8wE2BZdffnlBTlSHjeHJg7COnnrqqYIWR2t66KGH4oorrij4PgAAlLYn\nnngijj/+eGeWAkTE6tWr45prrolbbrkl6ygANebft0WGUuPKI1gHkydPjgsuuGCdiqM99tgjTjzx\nxOjRo0e0b98+GjduHEuXLo3PPvssxo0bF+Xl5VFRURGrVq3KeZxhw4bFXnvtFaeddlpNfRsAABRY\nrVq1on379tGhQ4fYeeedo2XLllG/fv1YtWpVfP311/HVV1/F2LFjY8qUKet8UtJbb70Vffv2jVGj\nRkW9evUK/B0AbJzddtstOnbsGLvvvnu0b98+dt1112jatGk0atQoGjVqFFtttVUsWrQoFi5cGLNn\nz45JkybF+PHj47nnnovFixev0x4333xztGvXLvr06VPg7wagsCorK2PgwIFZx4BqKY8gj2+++SbO\nOOOMWLZsWc655s2bx5AhQ+KEE074j9vN1alTJxo3bhx77LFHnHTSSfHee+/F5ZdfHq+++mrOY15x\nxRXRtWvX2GuvvTb6+wAAoDDatGkTRx55ZBxxxBFx4IEHRuPGjfN+TWVlZTz++OPxxz/+MWbOnJl3\n/q233ooBAwbEXXfdVRORAWpMx44d4+CDD44ePXpEjx49okWLFnm/pnnz5tG8efPYZZdd4oc//GFE\n/Ou996hRo2LIkCHr9HPxV7/6VXTr1i122mmnjf4eALJy9dVXx9y5c7OOAdVy2zrI49Zbb42PPvoo\n58yee+4Zo0ePjj59+qzTc4r23HPPGDVqVJxzzjk555YtWxYDBgyI1atXr1dmgKzttNNOcdhhh2Ud\nA6BgGjVqFGeddVY8//zzMXHixLj11lvjiCOOWKfiKCKiSZMmcfbZZ8c777wTgwcPjrKy/Of1DR8+\nPP73f/93Y6MDbJSysrLo3r173HjjjTFhwoR47bXX4pZbbonjjjtunYqjtWnQoEH069cv3njjjbjo\noovyzi9atChuuOGGDd4PIGujR4+Ohx9+uNq1tm3bFjcMVKNWZWWlT6VhLaZNmxbdu3ePFStWrHWm\nTZs28fzzz8f222+/QXtccskl8eCDD+acueuuu6Jfv34bdHyAjfWDH/wgpkyZstb11q1bR6dOnWK/\n/fZLv5o1axYzZ86MTp065Tz2xIkTo02bNjUdGaDG3H777TF48OD0/9u0aRMXXXRR9OvXLxo1alRj\n+7z11ltx4oknxvz583PO7bLLLvH222+vU9kEUAhLliyJ+vXrF3yf7/78rU7t2rVj4sSJrj4CNjlL\nly6NHj16xMcff/wfa02aNIk//OEPceaZZ+Y8hmdiUmjecUAOt9xyS87iqE6dOnH//fdvcHEU8a8r\nm8aPHx+TJk1a68yQIUOib9++sdVWW23wPgA1YYcddojOnTvHfvvtF507d479998/tttuu6xjARRc\nu3bt4vLLL4++ffsWpLg54IADYvjw4dG7d++ct0v++OOPY8SIEU4sAjJTjOIoImLAgAHx/vvvx1//\n+te1zlRVVcWjjz4av/71r4uSCaCm3HTTTdUWRxER119//UZdyQk1xW3rYC1mz54dTz75ZM6Zc889\nN/bff/+N2qdu3bpxxx135Lzd3cyZM2PkyJEbtQ/Ahjr33HPj0UcfjQ8++CDee++9GD58eAwcODB6\n9uypOAI2ey1atIjf/e538eabb8ZJJ51U0Ct+unXrFjfffHPeub/85S8FywBQSm644Ya8twOtqKgo\nUhqAmjF+/Pi1Pseye/fuccoppxQ5EVRPeQRrce+998a333671vXGjRvX2NlN++23X/z85z/POXP3\n3XfXyF4A6+vUU0+Nn/zkJxt1lSXApurkk0+Oc845J+rUqVOU/U499dTo2LFjzpnXX3895s2bV5Q8\nAFlq2bJlHH300TlnJkyYEFVVVUVKBLBxvv322/jlL38Zq1at+o+1rbfeOoYOHbpOz1OHYlAeQTWq\nqqpixIgROWdOPfXUaNKkSY3tefHFF+dcf/vtt2P69Ok1th8AAKVnq622yvu6cPXq1TFmzJgiJQLI\n1lFHHZVzffny5TFr1qwipQHYOEOHDo1//vOf1a5deumlscceexQ5Eayd8giqMWbMmJgzZ07OmdNO\nO61G9/z3w+Zzeeyxx2p0TwAASk/Pnj2jdu3cb9XefffdIqUByFaHDh3yznhoPLAp+PDDD+N3v/td\ntWu77bZbXHbZZUVOBLkpj6AazzzzTM71fffdN9q3b1/j++a7dd2zzz5b43sCAFBamjdvnvfD0rU9\nYBlgc9OyZcu8M8uWLStCEoANt3r16ujfv38sX7682vU//OEPUbdu3SKngtyUR1CN0aNH51zv2bNn\nQfY98sgjc65PmjTJ/e0BALYA+Z4z5yx7YEuxLh+mbrvttkVIArDh/vu//ztef/31atdOOumk+OEP\nf1jkRJCf8gi+44svvsh7G5BDDjmkIHu3b98+Wrduvdb1qqqqvMUWAACbvubNm+dcd5Y9sKX44osv\n8s40a9asCEkANsynn34agwcPrnatefPmceONNxY5Eawb5RF8x9ixY3Oul5WVRdeuXQu2/4EHHphz\nfdy4cQXbGwCA0rB06dKc6/Xq1StSEoBszZw5M+d6ixYt8l6tCZClX/3qV7Fo0aJq12666SYFOCVL\neQTfMWnSpJzre+yxR0HfrHfu3Dnner58AABs+ubMmZNz3S2agC3F888/n3O9e/fuRUoCsP4ef/zx\neO6556pd+9GPfhS/+MUvipwI1p3yCL4jXzmz1157FXT/vffeO+e68ggAYPO2cuXKeO+993LO7LLL\nLkVKA5Cd5cuXx1NPPZVzplevXkVKA7B+5s2bF4MGDap2rV69enH77bcXORGsH+URfMe0adNyru+6\n664F3T/fBwGVlZUxb968gmYAACA7o0ePzvtMo44dOxYpDUB27rjjjvjkk0/Wur7jjjtG7969i5gI\nYN0NGjQovvrqq2rXfv3rX0e7du2KnAjWj/IIvmPWrFk51wv9g32nnXaKOnXq5JyZMWNGQTMAAJCd\n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\nzz47Vq1alXOue/fuMXz48KhXr16RkgFsevI9eH758uUxbty4IqUBtlRXX331Wq8mv/DCC2OfffYp\nciIoLPdEgO9o06ZNfP3112tdnzZtWkH3nz59es71WrVqxc4771zQDAAAbLiKioo4/fTTY+XKlTnn\nunTpEn/961+jQYMGRUoGsGnab7/9okWLFjnvBDJp0qTo0aNHEVMBW5q1fV5YVlYWrVq1ioceeqjG\n9vrwww/zzuTbb/vtt48jjzyypiKxBVIewXd06NAh3nnnnbWuT506taD7f/TRRznX27RpE9tss01B\nMwAAsGFGjx4dJ598ct7bJ+27777xxBNP5H2OBwD//yTKXOVRrpNAAQrp22+/jUGDBhV93/79++dc\nP+igg5RHbBS3rYPv6NSpU871yZMnF3T/iRMn5lzPlw8AgGy89tpr0a9fv1i2bFnOuY4dO8bIkSOj\nSZMmRUoGsOlr0aJFzvX58+cXKQkAbBmUR/AdnTt3zrk+Z86cmDt3bsH2Hz9+fM71fffdt2B7AwCw\nYd56663o27dvLFmyJOfc7rvvHuXl5dGsWbMiJQPYPOS7UjPfrUIBgPWjPILv6Ny5c97bwo0ZM6Yg\ne69YsSLeeuutnDPdu3cvyN4AAGyY8ePHxwknnBCLFy/OOdeuXbsoLy/Pe/Y8AP/pm2++yblev379\nIiUBgC2D8gi+o27dutGtW7ecM3//+98Lsvebb76Z82zVhg0bxve///2C7A0AwPqbPHlyHH/88bFw\n4cKcczvvvHOMGjUqdthhhyIlA9i8fPLJJznXmzZtWqQkALBlUB5BNQ477LCc688880x8++23Nb7v\nqFGjcq7/4Ac/iDp16tT4vgAArL/3338/jj/++KisrMw517p16xg1alS0bt26SMkANi8rVqyIqVOn\n5pxp165dkdIAwJahLOsAUIp69eoV11xzTaxevbra9a+//jpeeuml6NmzZ43tuXLlyhg5cmTOmd69\ne9fYfgAAbLhp06bFcccdF1999VXOuR122CFGjRoVbdu2LU4wgM3Q66+/HkuXLs0506FDhyKlAbZU\nkydPLtper7zySvTq1SvnTL4TmGBjufIIqtG2bds48MADc84MGzasRvd88skn48svv1zrev369eOY\nY46p0T0BAFh/M2bMiGOPPTbmzp2bc65ly5YxatQoZ8MDbKRHHnkk53qTJk2iY8eORUoDAFsG5RGs\nxUknnZRzvaKiIiZMmFAje61atSqGDh2ac+bYY4+Nhg0b1sh+AABsmE8//TSOPfbY+PTTT3PObbfd\ndlFeXh7t27cvUjKAzdPUqVPjiSeeyDnz4x//OGrX9hEXANQk/7LCWpx44omx/fbb55wZNGjQWm9t\ntz7uu+++eO+993LOXHzxxRu9DwAAG27u3Llx3HHHxaxZs3LONW3aNJ566qnYc889i5QMYPO0cuXK\nuOiii/I+c7hfv35FSgQAWw7lEaxF3bp148ILL8w588Ybb8Qdd9yxUft8+OGHcd111+WcOfLII2Ov\nvfbaqH0AANhw8+bNi969e8dHH32Uc27bbbeNp556KvbZZ58iJQMojldeeSUWLFhQtP1WrVoVF154\nYbz99ts55zp06BCHHXZYkVIBwJZDeQQ5nHfeedGmTZucMzfccEOMGjVqg44/d+7c+MUvfhHffPPN\nWmfKysrylksAABTOggUL4vjjj897pXjjxo3jySefjM6dOxcpGUDxPPLII7HvvvvGrbfeGgsXLizo\nXnPmzIm+ffvGiBEj8s5eddVVblkHAAXgX1fIoV69evHb3/4258yqVavirLPOinvvvXe9jv3Pf/4z\nfvrTn8a0adNyzp177rlueQIAkJFvvvkm+vbtGxMnTsw517BhwxgxYkR06dKlSMkAim/BggXx29/+\nNvbdd98YOHBgvPbaazVyK/d/W7ZsWfzxj3+MAw44IF588cW887169YpevXrV2P4AwP9XlnUAKHVH\nH310nHTSSfHII4+sdWblypVx+eWXx6hRo+Lqq6+OAw44YK2zn3/+edx1111x9913x/Lly3Pu3bFj\nx7j66qs3ODtATXn11Vfzlt3fNW/evLwzTz31VDRr1my9jrvrrrvGQQcdtF5fA7ChzjrrrHjzzTfz\nzvXq1Ss++OCD+OCDD4qQ6l9OPfXUou0FsKbKysoYNmxYDBs2LHbYYYfo1atXHHroofH9738/tttu\nu/U61pIlS2Ls2LExYsSIKC8vX+ermtq2bRtDhw7dkPgAwDqoVVlZWXOniMBmasmSJXH44YfHu+++\nu07z7dq1ix49ekT79u2jUaNGsXTp0vjss8/inXfeiTfffDNWrVqV9xgNGzaMF198MfbYY4+NjQ+w\n0S644IIYPnx41jEi4l8PRL7rrruyjgFsIfbZZ5+YPXt21jGqVVlZmXUEYAuyrq8HW7VqFbvttlvs\n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\nx1RUVMT//M//xH333RcbN27MWp85c+Z40wzk1KJFi6JLly75HqNKY8eOjR49euR7DGA3V1FREb/8\n5S/j97//fWzdujUrPQ444ID4+c9/Hv369cvK8QF21qpVq+Kmm26K+++/P6PnwgYNGsSll14al19+\nedStWzdjx4VUivM9AADw9TdhwoQ46qij4vbbb89qcAQAQOF59dVXo3v37nHPPfdkLTiKiFiwYEEM\nHTo0Lrjggli7dm3W+gDUxPTp06NHjx5x7733ZvxcuGHDhvjVr34Vffv2jSVLlmT02FAV4REAUGOV\nlZVx9dVXx6BBg2L58uX5Hgdgt1Rc7GMdkD9jxoyJU045JadfZj7xxBPRv39/7z+BgvHss8/GySef\nHB988EFW+8yYMSN69eoVb731Vlb7QITwCACooY0bN8bZZ58dd999d75HAdhtNW7cOEpLS/M9BrCb\nevbZZ+OCCy6ILVu25Lz3rFmz4tRTT43Vq1fnvDfAl40ZMybOOeec2Lx5c076LV++PAYMGBDz5s3L\nST92X7XzPQAA8PWzZcuWOPPMM2PSpEnVqi8pKYnevXtH9+7do0OHDtGuXbto0qRJNGjQINasWRMV\nFRWxcuXKeOutt2LOnDkxZ86cmDlzZl6+iAD4OjnttNOiUaNG+R4D2A299dZbccEFF0RlZWW16tu3\nbx99+/aNI488Mjp27BglJSXRtGnT2LhxY1RUVMSHH34Y06dPj5dffjkmTJhQrS2f3njjjfj+978f\njz766M7+OAA18re//S0uvvjiap0L69atGz169IiTTz45unbtGi1btowWLVrEunXrYtmyZbFgwYIY\nP358vPDCC7Fs2bKUx1q+fHnymTzfz21n11VUUVGxPd9DQCFKdeLt1q1bDB06NKv9DzvsMFeRAgVp\n+/btccEFF8STTz6Ztvab3/xmXH755dG/f/+oV6/eDvWpqKiI8ePHx7hx42LChAnJs5TmzJkT+++/\nf41mB6iJRYsWRZcuXfI9xleaOHFiHHnkkfkeA9jNVFZWRs+ePeP1119PW9u5c+e4/vrr4/jjj4+i\noqJqHf/DDz+M22+/Pe69995qfSF77733xuDBg6t1bIBMWb58eRx33HHxySefpK0dOHBg3HDDDbHf\nfvulrd2yZUvce++9cfPNN6e9u7JPnz7x+OOPV3tm2BHCI6hCqvDozDPPtE0TsNu65ZZb4sYbb0xZ\n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\n2tpf/vKXrhYAcq4m58Bbb701jj766J3q26xZsygvL48mTZqkrJs9e3ZMnjx5p3oB5MuMGTPirbfe\nSlkzbNiwKCoqytFEADWzefPmuPbaa2PgwIExf/78tPWNGzeO3r17x4UXXhjXXHNN3HrrrXHjjTfG\nFVdcESNGjIjOnTtHcXH6r6oWLFgQffr0idtuuy0TPwbADisrK4s+ffqkrRs9enScffbZ1X4W+hcq\nKyvj/vvvj7POOis2bNiww/PVq1dvh18D/yl7344DKdWvXz/Ky8ujrKwsFi1aVGXdRx99FGPGjMno\nQ/YA0qlbt+4O1ffv3z8GDRqUkd777bdf/OIXv4iLL744Zd39998fvXr1ykhPgFwqLy9PuV5cXBxn\nnXVWjqYBqJktW7bEd7/73fjLX/6Ssq64uDj69esXF110URx99NFRq1atlPUVFRXx3HPPxW233Rbv\nvfdelXVbt26N6667LjZt2hRXXnlljX4GgJ3x29/+No455phYsWJFyrrnn38+pkyZEj/4wQ/izDPP\njDZt2lRZu3HjxnjppZfiF7/4RcydO7fKutq1a6fcMUR4RCYUVVRU2PMF8mjKlCkxYMCAlDXdu3eP\n559/PkcTAUQsXrw4Dj300GrVFhUVxbRp06J9+/YZ6799+/Y4+uij4913362ypn79+vH+++9Hw4YN\nM9YXINvWr18fhxxySKxevbrKmhNPPDHGjBmTw6kAdkxlZWUMHz48xo0bl7KuY8eOcf/998c3v/nN\nGvV46KGH4uqrr077jKNbbrklzj///B3uAbCzJk+eHGeccUZs2bKlWvVFRUVRWloaRxxxRLRs2TJa\ntGgR69ati08++STef//9+Nvf/hbr1q1LeYz+/fvH/PnzU97JPmrUqBgxYsSO/Cjwf7jzCPKsrKws\nTjrppBg/fnyVNa+88kosX748WrZsmcPJgN3ZHnvsUe3asrKyjAZHEZ+/oT733HNT7iO9cePGmDJl\nSvTt2zejvQGy6U9/+lPK4CgiYvjw4TmaBqBm7rjjjrTB0WmnnRZ33nlnNGjQoEY9iouL45xzzokj\njjgihgwZEh999FGVtT/5yU+irKwsDj744Br1Aqipnj17xu233x4XX3xxtZ4ztH379pg1a1bMmjWr\nRv06deoUd955Z9ot45s1a1aj48OXeeYRFICLLroo5XplZWW88sorOZoGIKKkpCTtliJfyNbWSmee\n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\nOOWUU+LCCy+MI488MmrVqpWyvqKiIp599tm47bbbYv78+dWa59vf/nY8+eST1aoFyKQTTjghpk+f\nnvzzIYccEv369Ys+ffrEYYcdVq3nsG3bti2mTZsWjz32WIwZMybtnZYRn2/Tee+990ZRUdFOzQ+p\nCI/gS6oKj/7T3nvvHe3bt4/9998/WrVqFSUlJVG/fv2oVatWVFRUxMqVK2PFihUxe/bseOutt6Ky\nsnKH5ujQoUOMHTs2WrVqVdMfBSBrxo0bF8OGDavWlwVFRUXRtWvXKC0tjZYtW0bz5s1j7dq18ckn\nn8T8+fNj6tSp1X7WXK1ataK8vLxaD2oGyJef//znceutt6asmTZtWhx88ME5mgggO2666aa4+eab\nd+g1TZo0iW9961vRvn37aNasWTRr1iw2bdoUK1eujE8//TSmT58eb7755g59hm7btm1MmTIlmjVr\ntqM/AsBO+8/w6Mtq164dHTp0iM6dO0fr1q2jadOm0bRp06isrIx169bF0qVL47333osZM2bs0NZ3\nffv2jdGjR0edOnUy9WPAVxIewZdUNzzKpsMOOyyeeuopwRFQ0MrLy+PSSy/dqecb7YhatWrFbbfd\nFkOHDs1JP4CaqKysjEMPPTSWLl1aZc0xxxwTf/nLX3I4FUB2bN++PS6//PL4wx/+kLcZ9t577xg7\ndmwcdNBBeZsB2L2lCo+yYfjw4TFq1Ki0d3FCJtgMFgrIkCFDYvz48YIjoOANHz487r777mrdgr+z\n9thjjxg9erTgCCh4L774YsrgKCJi2LBhOZoGILuKiori17/+dfzwhz/My7ZJnTt3jj//+c+CI2C3\nUK9evbjxxhvj9ttvFxyRM8IjKAD77rtvPPbYY3HPPfdEgwYN8j0OQLV8EXjvv//+WevRpUuXmDx5\ncvTr1y9rPQAypby8POV648aN49RTT83RNAC58eMf/zjGjBkT++23X076FRcXx/e+973461//Gu3a\ntctJT4B8Ki0tjRdffDEuvvjifI/CbkZ4BF9y2GGH5fTNZ9u2bePWW2+NGTNmRN++fXPWFyBTSktL\n4x//+EdcddVVGQ2/W7ZsGbfeemu89NJL8Y1vfCNjxwXIlk8//TTtdnSnn356NGzYMEcTAeTOCSec\nEP/85z/j2muvjebNm2elR1FRUfTp0ycmTZoUN998swsvgYLQpk2brB37gAMOiPvuuy8mTZoUnTt3\nzlofqIpnHsFXWLp0aUydOjVefvnlmDVrVrzzzjuxefPmjBy7TZs20bt37zjjjDOiR48eUVwswwV2\nDZ9++mk89NBD8dBDD8UHH3yww68vLi6Obt26xVlnnRWDBg3KyZZ4AJlyxx13xLXXXpuy5qWXXooj\njjgiRxMB5Mf69evjueeeiz/+8Y8xderU2Lhx404d76CDDoqBAwfG4MGD4+CDD87QlACZs2jRopgw\nYUJMnDgxpk2bFitXrqzxsRo1ahQnnHBCnH322dGrVy/fG5JXwiOohi1btsTbb78db775ZixatCiW\nLl0aS5cujY8++ihWr14d69evj40bN8amTZuidu3aUb9+/dhjjz1ir732ijZt2sQ3vvGN6NixYxx+\n+OHRoUOHfP84AFk3b968eOmll2Lu3Lnx7rvvxtKlS2Pt2rWxfv36qF27djRo0CBatGgRbdu2jQ4d\nOsSRRx4ZPXr08Mw3AIBdyMaNG2PatGkxe/bsePvtt2PhwoWxbNmy+Oyzz2LTpk2xadOmqFWrVtSv\nXz8aN24crVq1ijZt2kSHDh2iY8eOceyxx+ZsOzyATHnvvfdi+vTp8a9//SsWLlwYCxcujOXLl8e6\ndeti3bp1sW3btmjUqFFy3mvfvn20b98+jjnmmDj66KOjbt26+f4RICKERwAAAAAAAHyJ+94AAAAA\nAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABI\nCI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8A\nAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAA\nAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABI\nCI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8AAAAAAABICI8A\nAAAAAABICI8AAAAAAABICI8AAAAAAABI1M73ALuKkpKSfI9QMCZPnpzvESIiYuHChfkeISIiRowY\nke8RKFAVFRX5HiErnA8LT6Gclwvld6O0tDTfI/AfnA93fZdddlm+R4iIwvkzGThwYL5HiIiILl26\n5HuEWLVqVb5HiIiIdu3a5XuEiCiczzCZVij/7xWCUaNG5XuEiCic89CDDz6Y7xEiojD+XHbV90M1\ntav+93A+/HfPPPNMvkeIiML4c+nZs2e+R6CA5euc6M4jAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAA\nEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIj\nAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAA\nAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAA\nEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIj\nAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAEsIjAAAAAAAAErXzPQAAAADA7qC0tDTfIxSUESNG5HuE\niIjo2bNnvkcoiBnYfbRr1y7fI0RExIABA/I9QsHYvn17vkeIiIg5c+bke4SI8PdloRAekXGF8hdQ\nWVlZvkeIiIjvfve7+R4hIiIWLVqU7xEK5ncDcqVQ3ggXyvnw+uuvz/cIwG6uoqIi3yNERMRll12W\n7xEiojDmKCkpyfcIEVE4vxsAAFAobFsHAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABA\nQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngE\nAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAA\nAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABA\nQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngEAAAAAABAQngE\nAAAAAABAQngEAAAAAABAQngEAAAAAABAona+B2DXU1FRke8RIiJi//33z/cIERGxatWqfI8QERGT\nJ0/O9whRUlKS7xEionB+R9n1XX/99fkeoaA888wz+R4ByJNRo0ble4SCMnLkyHyPEBER7dq1y/cI\n0bNnz3yPADk1e/bsfI8QERELFy7M9wgRETFixIh8jxARhfEZsVDOh4Xw3QHZVyjfzxSKKVOm5HuE\ngjkvF8q5iMLgziMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMA\nAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAA\nAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAAS\nwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMA\nAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAAAAASwiMAAAAA\nAAASwiMAAAAAAAASwiMAAAAAAAAStfM9ALuehQsX5nuEiIjo0qVLvkeIiIimTZvme4SIiJg9e3a+\nR4iKiop8jwA5VVJSku8RIiJizpw5+R4hIgrjPAS7o549e+Z7hIKYoZBcdtll+R6hYAwcODDfI0RE\nxIMPPpjvEdhNFMrv2qxZs/I9QkREtGvXLt8jRERhfFYtlO9S2D34fft3hfB+5Jlnnsn3CBFRON9j\nUBjceQQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBC\neAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQA\nAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAA\nAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBC\neAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQAAAAAAEBCeAQA\nAAAAAECidr4HAAAAANgdlJSU5HuEglJWVpbvESIi4oADDsj3CLFw4cJ8j8BupKKiIt8jRETEnDlz\n8j1CRESsXLky3yPEb3/723yPEBERpaWl+R4hIiLatWuX7xEiwrlZeETGDRw4MN8jREREz5498z1C\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x858ec50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nrows, ncols = 2, 5\n",
    "fig, axes = plt.subplots(nrows, ncols,\n",
    "                         figsize=(6, 3))\n",
    "for i in range(nrows):\n",
    "    for j in range(ncols):\n",
    "        # Image index\n",
    "        k = j + i * ncols\n",
    "        ax = axes[i, j]\n",
    "        ax.matshow(digits.images[k, ...],\n",
    "                   cmap=plt.cm.gray)\n",
    "        ax.set_axis_off()\n",
    "        ax.set_title(digits.target[k])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "(X_train, X_test, y_train, y_test) = \\\n",
    "    ms.train_test_split(X, y, test_size=.25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "knc = nb.KNeighborsClassifier()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "knc.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.987"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knc.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Let's draw a 1.\n",
    "one = np.zeros((8, 8))\n",
    "one[1:-1, 4] = 16  # The image values are in [0, 16].\n",
    "one[2, 3] = 16"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "podoc": {
     "output_text": "<matplotlib.figure.Figure at 0x87ef160>"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAALCCAYAAAD3ZSZJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAuIwAALiMBeKU/dgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XuQ3fP9+PHX2lRkk+jmgrgkpBLi\nkrhUw7rEICky1C20QzGKqHEZ97qUMVO0iE5IMQQ1TNwvRTQkWpeQxC1IlVFB3EMuNiGJRLL7/cOv\nv2/rK+ecTV57dvfs4/FnP+/9fF6nnamnzzmf96eqvr6+MQAAWC1rtPQAAACVQFQBACQQVQAACUQV\nAEACUQUAkEBUAQAkEFUAAAlEFQBAAlEFAJBAVAEAJBBVAAAJRBUAQAJRBQCQQFQBACQQVQAACUQV\nAEACUQUAkEBUAQAkEFUAAAlEFQBAAlEFAJBAVAEAJBBVAAAJRBUAQAJRBQCQQFQBACQQVQAACUQV\nAEACUQUAkEBUAQAk6NDSAwBtx8KFC2PWrFkxd+7cWLRoUSxevDhWrFgRnTt3js6dO0dtbW1ssskm\n0bNnz5YeFaDsRBXwvb755puYOnVqTJkyJaZOnRqvv/56zJs3r6S/7dq1awwYMCDq6uqirq4udttt\nt+jSpUszTwzQsqrq6+sbW3oIoPV48cUX46677ooHH3ww5s+fn3LOmpqaGD58eBx22GExbNiwqKqq\nSjkvQGsiqoCIiHj66afjiiuuiOeee65Zr7PlllvGWWedFQceeGCssYafdQKVQ1RBO/fhhx/GmWee\nGRMnTizrdbfbbru4+uqrY9CgQWW9LkBz8a+J0I7deuutUVdXV/agioh45ZVXYs8994xLLrkkGhoa\nyn59gGzuVEE7tGzZsjjrrLPitttua+lRIiJi2LBhMXbs2KitrW3pUQBWmaiCdmbRokVx2GGHNem3\nU2ussUZsu+22sccee8SgQYOif//+se6660aXLl2iuro6vvrqq5g/f37MnDkz3njjjXjqqadi2rRp\nsXTp0pKvsdlmm8XDDz8cvXr1WpWPBdDiRBW0I4sWLYpDDz00pkyZUtL67t27x7HHHhtHHXVU9O7d\nu0nXqq+vj7vuuituuOGGeO+990r6m/79+8f48eNjvfXWa9K1AFoDUQXtxIoVK2LEiBHx5JNPFl1b\nXV0dJ554Ypx11lmr/ZXcN998E2PHjo3LLrssvvrqq6Lrt9hii5g0aZJ9rYA2R1RBO3H++efHdddd\nV3TdhhtuGGPHjo2dd9459frvvPNOHHPMMTFjxoyia/fbb7+4/fbb7WcFtCme/oN24MEHHywpqAYM\nGBCTJk1KD6qIiE033TQmTJgQe+yxR9G148ePj6uvvjp9BoDm5E4VVLi5c+fGjjvuWPQVM/369YuJ\nEydG9+7dm3WeZcuWxYgRI+KZZ54puK5jx44xefLk2GyzzZp1HoAs7lRBhTv33HOLBlWPHj3i3nvv\nbfagiohYc80147bbbovNN9+84LqlS5fGqaeeGo2N/r0PaBtEFVSwl19+Oe67776i6/70pz9F3759\nyzDRt2pra+Pmm2+ONddcs+C6adOmxV/+8pcyTQWwekQVVLBLL7206Jpf/vKXse+++5Zhmv+29dZb\nx7nnnlt03eWXX27HdaBN8JsqqFAvvfRSDB06tOCarl27xvTp02OdddYp01T/benSpTF48OB4//33\nC67785//HAcddFCZpvpv77//fjz22GPxyiuvxJtvvhmzZ8+OL7/8MpYuXRo1NTXRrVu32HjjjWPr\nrbeOurq62GuvvaJz584tMuvKfPbZZzFt2rR48cUXY+bMmfHBBx/EnDlzYvHixbFkyZJYa621oqam\nJnr16hWbbLJJDBw4MHbaaafYaaedomPHji09PrQZogoq1EknnRTjxo0ruOb888+Pc845p0wTfb97\n7rknRo4cWXDNbrvtFo888kiTzz158uTYf//9V3r82muvjSOOOOL//OcNDQ3xyCOPxJgxY+Kll15q\n0jVrampixIgRcfrpp5f1K9XvWrhwYdx5553xwAMPxAsvvLBKv01be+21Y//994+RI0fGNtts0wxT\nQmURVVCBvvzyyxgwYEAsWrRopWs6deoU//znP8vy4/RCli9fHoMGDYpPPvlkpWuqqqrilVdeiU02\n2aRJ516VqHrllVfi1FNPjX/84x9NutZ3rbnmmnH66afH2WefHR06dFitczXFwoULY/To0XHTTTfF\nwoUL08679957x+9///v40Y9+lHZOqDR+UwUVaPz48QWDKiJixIgRLR5UEREdOnSIY445puCaxsbG\nuPvuu5t9lmuuuSaGDh262kEV8e3WEZdffnmMGDEiFixYkDBdcQ899FAMHjw4/vjHP6YGVUTE448/\nHjvvvHNJ+51BeyWqoAJNnDix6JoRI0aUYZLSlDLLpEmTmu36jY2Nceqpp8ZFF10UK1asSD33U089\nFb/4xS9i8eLFqef9T8uWLYuzzz47jj766Jg9e3azXefrr7+O888/P44//vj45ptvmu060FaJKqgw\nK1asKPp+vx49esSuu+5apomK69u3b9Hf7EyfPj2++OKLZrn+2WefHbfddluznDsiYurUqXH22Wc3\ny7kXL14chx56aIwdO7ZZzv997r333jjqqKNi2bJlZbsmtAXl+6IfKIsZM2ZEfX19wTVDhgyJ6urq\nMk1Umj322CNee+21lR5vaGiIyZMnx89+9rPU644ZMyZuuummlR7v2rVr7LrrrtGnT59YZ511olu3\nbrFgwYKYM2dOvPrqq/HCCy+UdHdr3Lhxsd9++6VuX7FkyZI45JBDYurUqSX/zUYbbRQ77bRT9OrV\nK7p37x4//OEPY+HChTF37tyYNWtWTJ48uaSvDidMmBCnn356XHvttavzEaCiiCqoMIXC5N922WWX\nMkzSNHV1dTF69OiCa2bMmJEaVS+//HLcfvvt33ts3333jRNPPDHq6uriBz/4wUrPUV9fHzfeeGOM\nHj266Fd8F1xwQQwbNizth+snn3xySUG14YYbxq9//es48MADo3fv3gXXLl++PKZMmRJXXXVVPP30\n0wXXjhs3Lrbffvs49thjmzQ3VCpf/0GFmTFjRtE1O+ywQxkmaZqf/OQnRdeU8tma4pZbbvk/vw0a\nMGBATJgwIe68884YMmRIwaCK+HZ3+HPOOSemTp0am266acG17777bjz88MOrPXfEt3fY7r///oJr\nampq4qqrropXX301TjnllKJBFfHtgwNDhgyJhx56KO6///6ie5hddNFFMWvWrKaMDhVLVEGFeeON\nNwoer6qqapUvKe7evXvRf4AX+2yra5dddonHHnss6urqmvy3G2+8cYwfPz769OlTcN0tt9yyquP9\nf2+//XbR3fK32GKLePLJJ+PYY48tGoYrs9dee8UTTzwRAwYMWOmaRYsWlbQzPrQHogoqzEcffVTw\neO/evaOmpqZM0zRNsdj79NNP05/O+7e6urp44IEHora2dpXPsf7668dVV11VcM2UKVPis88+W+Vr\nRESceeaZ8fXXX6/0eL9+/WL8+PFFX1pdio033jgeeuihWG+99Va65rHHHovp06ev9rWgrRNVUEEa\nGhqKPlK/4YYblmmapis224oVK5ply4Da2toYO3ZsyitZhg0bFj/96U9XeryhoaHo05mFPP300/HM\nM8+s9HjPnj3jvvvuix49eqzyNb5rvfXWi5tuuqngww3XXHNN2vWgrRJVUEE+//zzWL58ecE16667\nbpmmabpS3kH46aefpl/38ssvj4022ijtfN/36pv/NG3atFU+96hRowoev/jii5u883wpdttttzj4\n4INXevyvf/1rzJs3L/260JaIKqggpTwK37NnzzJMsmpKiarsncJ79+6dvhHqPvvsE2uvvfZKj7/+\n+uurdN533nknnn322ZUe33bbbYsG3eo47bTToqqq6nuPLVu2LB599NFmuza0BaIKKsiSJUuKrllr\nrbXKMMmqKWW2Uj5jU5xwwgnpe3Z17NgxBg4cuNLj//rXv1bpvHfeeWfBFyOfcsopK42eDFtttVXB\npzSfeOKJZrs2tAWiCirI0qVLi65pzVFVym+aCv1Ae1Vkbyb6b1tttdVKjy1cuDC+/PLLJp/zscce\nW+mxmpqa2GeffZp8zqYqtBP/c8891+zXh9ZMVEEFKfZ7qohodTup/6dSNsXMfOfcBhtsUHQLhFVV\n7Mm7uXPnNul8s2fPLvi14dChQ6Nz585NOueq2HnnnVd6bN68efHxxx83+wzQWokqqCCl3Olpze9r\nK2W2zDttO+64Y9q5vqvQb6oiIhYsWNCk87300ksFj2+33XZNOt+qKraBaHPvJQatmaiCClJKVJXy\nFWFLKeWrvcyoynzi77u6dOlS8HhT47bY64cy9qQqRbGtGtypoj3z7j+oIJ06dSq65quvvirDJKum\nlNlK+Yyl6tatW9q5vqvYV3FNjaq333674PEZM2Y0+SvFVVFs89VPPvmk2WeA1kpUQQUpZcPHzz//\nvAyTrJo5c+YUXZO5qWVzRlWxp/AKPcX3fYrdAfrDH/7QpPM1l1X5AT5UCl//QQWpra0teoekNUdV\nKbNtsMEGaddbc801087V3Jpj09PmkP10JrQlogoqzPrrr1/w+KxZs8ozyCp47733Ch7v1KlTdO/e\nvUzTtC5t5Q5Qa/7NHjQ3UQUVpm/fvgWPf/HFF63yblVDQ0PMnDmz4JrmeP1KW9FW7gA19WtNqCSi\nCipMoZ28/601Pvb+3nvvFd0tvZTPVqky9+cCmoeoggozaNCgomumTJlShkmappSZSvlslaqU7TKA\nluXpP6gw22+/fdE1rfF1IlOnTi26ppTPVqk6deq00jt5a6+9dnzwwQdlngj4LneqoML06dMn+vfv\nX3DN888/H/Pnzy/TRMWtWLEiJk2aVHDN2muvHYMHDy7TRK1PoR/oL1y4sFX97wntlaiCCjR06NCC\nx5cvXx7jx48v0zTFPfvss0X3qBoyZEhJ7wasVMV2f2/NT3VCeyGqoAINHz686Jpx48aVYZLSlDJL\nKZ+pkhV78rHYk5NA8xNVUIF23XXXov8Qfv7552P69OnlGaiA2bNnx4MPPlhwTdeuXeOAAw4o00St\nU7Ef6f/9738v0yTAyogqqEBVVVVxxBFHFF135ZVXlmGawq655pqi2wUccsghRXeKr3Q//vGPCx6f\nNGlSNDQ0lGka4PuIKqhQRx99dNTU1BRcM2HChJg8eXKZJvq/Zs2aFTfddFPBNVVVVTFy5MgyTdR6\nDRw4MNZZZ52VHp83b15JT1ACzUdUQYVad91149hjjy267qyzziq66WZzaGxsjDPOOCOWLVtWcN1B\nBx0UW265ZZmmar3WWGONor8ru/rqq8s0DfB9RBVUsNNOOy26du1acM1bb70VF110UZkm+l833nhj\n0d8BVVdXx29+85syTdT6/fznPy94fOLEie5WQQsSVVDBevToERdeeGHRdWPHjo3bbrutDBN9a/Lk\nyfHb3/626LqTTz45Nt988zJM1DbsvPPORV/Vc8EFFxS9+wc0D1EFFe7444+PnXbaqei6M844Ix59\n9NFmn+e1116LI488suiP0zfddNM477zzmn2etub0008veHz69Olx6qmnlmka4D+JKqhwVVVVcf31\n10dtbW3BdcuXL4+jjjoqbr/99mabZfLkybH//vtHfX19wXUdO3aMG264IdZaa61mm6WtOvjgg2PH\nHXcsuOauu+6Kyy67rEwTffuy5wkTJpTtetBaiSpoB/r27Rs333xzVFdXF1y3YsWKOOWUU+KUU06J\nRYsWpV2/oaEhRo0aFQcddFAsXLiw6PpRo0bFDjvskHb9SjNq1KiiL1i+4oor4sgjj4wFCxY02xwL\nFiyI66+/Prbffvs4//zzm+060FaIKmgn9tprr/j9739f0trbb789Bg8eHOPGjYsVK1as1nWffPLJ\nGDJkSFxyySWxfPnyoutPPvnkOPLII1frmpVu4MCBcfHFFxdd98gjj8Tuu+8e9913X0n/3ZeioaEh\nnn766TjppJNiyy23jPPOOy8+/PDDlHNDWyeqoB0ZOXJkXHrppSWt/fjjj+Okk06KbbbZJq644op4\n8803S77Ohx9+GGPHjo1ddtklDjrooHj99ddL+rsTTjghLrnkkpKv056deOKJJcXnrFmz4rjjjovt\nttsuxowZE2+88UY0NjY26VozZ86MO+64I0aOHBn9+/ePAw44IMaNG5d6NxMqQft9Oym0UyeddFJ0\n7Ngxzj333JLuXnz00Udx2WWXxWWXXRa9evWKQYMGRb9+/WLdddeNzp07R3V1dSxatCjmz58fM2fO\njDfeeCPeeeedJs912mmnlXT3hf81evToqK+vj0ceeaTo2g8//DAuvPDCuPDCC6Nbt24xePDg6N27\nd9TW1kZtbW106dIlli1bFkuWLIk5c+bEZ599Fu+++268/fbbJX1lC4gqaJeOO+646N+/f/zqV7+K\nefPmlfx3s2fPjtmzZ8fEiRPTZunUqVOMGTMmRowYkXbO9qK6ujpuvfXWOPPMM+PWW28t+e+++OKL\nePzxx5tvMGinfP0H7dTuu+8ezzzzTOy9994tNsMOO+wQf/vb3wTVaqiuro7Ro0fHlVdeGZ06dWrp\ncaBdE1XQjm244YZx9913x6233hp9+vQp23V79OgRl19+eUycONEraJIcf/zx8eSTT8auu+5a9mt3\n7dq16Ct0oD0QVUAceOCBMX369LjuuuuadQfzDTbYIH73u9/FjBkz4oQTTog11vB/QZkGDBgQ48eP\njzvuuKPZt6Sorq6OPffcM2688cZ46623Sn4AAiqZ31QBERHRoUOHOPzww+Pwww+P6dOnxz333BOP\nPvroaj8u37Nnzxg2bFgcdthhMWTIkKJ7ZbH6hg8fHsOHD49XX3017rjjjpgwYULKtgebbrpp7L77\n7rH77rvHkCFDolu3bgnTQuWoqq+vb9qztUC78tFHH8XUqVPj9ddfj/feey9mzZoVc+fOjUWLFsXi\nxYujsbExampqoqamJrp16xZ9+vSJvn37xhZbbBF1dXWx2WabtfRHIL59cfbLL78cr776asyaNSs+\n+uijmDNnTixZsiSWLFkSHTp0iC5dukSXLl2ia9eu0bNnz+jfv3/069cvNttss9hiiy2iV69eLf0x\noFUTVQAACfygAQAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIASCCq\nAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIASNCh\npQeoFLW1tS09AgDw/9TX15f9mu5UAQAkEFUAAAlEFQBAAlEFAJBAVAEAJBBVAAAJRBUAQAJRBQCQ\nQFQBACQQVQAACUQVAEACUQUAkEBUAQAkEFUAAAlEFQBAAlEFAJBAVAEAJBBVAAAJRBUAQAJRBQCQ\nQFQBACQQVQAACUQVAEACUQUAkEBUAQAkEFUAAAlEFQBAAlEFAJBAVAEAJBBVAAAJRBUAQAJRBQCQ\nQFQBACQQVQAACUQVAEACUQUAkEBUAQAkEFUAAAlEFQBAAlEFAJBAVAEAJBBVAAAJRBUAQAJRBQCQ\nQFQBACQQVQAACUQVAEACUQUAkEBUAQAkEFUAAAlEFQBAAlEFAJBAVAEAJBBVAAAJRBUAQAJRBQCQ\nQFQBACQQVQAACUQVAEACUQUAkKBDSw8A0Jo0Nja29AhlV1VV1dIjQEVwpwoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEnRo6QGA1quxsbGlRwBoM9ypAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIEGHlh4A\naL2qqqpaeoSya2xsbOkRgDbKnSoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAgQYeWHgCgNamqqmrpEYA2yp0qAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBI\nIKoAABKIKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEnRo6QEqRX19fUuPAAC0\nIHeqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIA\nSCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIA\nSCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIA\nSCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIA\nSCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIA\nSCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIA\nSCCqAAASiCoAgASiCgAggagCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKIKgCABKIKACCBqAIA\nSCCqAAASiCoAgASiCgAggag6utfZAAAAR0lEQVQCAEggqgAAEogqAIAEogoAIIGoAgBIIKoAABKI\nKgCABKIKACCBqAIASCCqAAASiCoAgASiCgAggagCAEggqgAAEvwPAhtBexLsYfIAAAAASUVORK5C\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x87ef160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(2, 2))\n",
    "ax.imshow(one, interpolation='none',\n",
    "          cmap=plt.cm.gray)\n",
    "ax.grid(False)\n",
    "ax.set_axis_off()\n",
    "ax.set_title(\"One\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We need to pass a (1, D) array.\n",
    "knc.predict(one.reshape((1, -1)))"
   ]
  }
 ],
 "metadata": {},
 "nbformat": 4,
 "nbformat_minor": 2
}
